from abc import ABC, abstractmethod
import pandas as pd


class BaseFundETF(ABC):
    """
    基金ETF数据获取的抽象基类
    """
    
    @abstractmethod
    def get_fund_etf_category(self, category: str) -> pd.DataFrame:
        """
        获取基金ETF分类数据
        
        Args:
            category: 基金分类，例如 "封闭式基金"
        
        Returns:
            pd.DataFrame: 基金ETF分类数据
        """
        pass
    
    @abstractmethod
    def get_fund_etf_daily(self) -> pd.DataFrame:
        """
        获取所有场内交易基金日行情数据
        
        Returns:
            pd.DataFrame: 基金ETF日行情数据
        """
        pass
    
    @abstractmethod
    def get_fund_overview(self, symbol: str) -> pd.DataFrame:
        """
        获取基金概况数据
        
        Args:
            symbol: 基金代码，例如 "518850"
        
        Returns:
            pd.DataFrame: 基金概况数据
        """
        pass
    
    @abstractmethod
    def get_fund_etf_hist_min(self, symbol: str, start_date: str, end_date: str, period: str, adjust: str, 
                             ) -> pd.DataFrame:
        """
        获取基金ETF分钟级别数据
        
        Args:
            symbol: 基金代码，例如 "518850"
            period: 时间周期，例如 "1" 表示1分钟
            adjust: 复权类型
            start_date: 开始时间
            end_date: 结束时间
        
        Returns:
            pd.DataFrame: 基金ETF分钟级别数据
        """
        pass
    
    # @abstractmethod
    # def get_fund_etf_hist(self, symbol: str) -> pd.DataFrame:
    #     """
    #     获取基金ETF历史数据
    #     
    #     Args:
    #         symbol: 基金代码，例如 "sh518850"
    #     
    #     Returns:
    #         pd.DataFrame: 基金ETF历史数据
    #     """
    #     pass
